@Author: Rodolfo Alfredo Quezada Nevarez                  Date: 16 / Mar / 2017
@ Description: Encontrar maximo numero
@ Input: -
@ Output: Max

@ maxfile.s



@ r1 - Mantener la direccion de los elemntos de datos
@ r0 - Utilizado para los datos mas grandes
@ r3 - Utilizado para el elemento de dato actual

.section          .data

numbers:                        @ Datos que vamos a utilizar
.long   3, 97,34,122,35,70,58,31,49,33,21,21,86,0

.global   _start
##############INICIA EXE#############
_start:
ldr %r1, =numbers               @ Establecer r1 para iniciar la direccion de los numeros
ldr %r3, [%r1]                  @ Carga r3 con el primer numero
mov %r0, %r3                    @ Al comienzo el numero actual debe ser el mas grande

loop:
  cmp %r3, $0                   @ Verificamos si r3 tiene 0 (final de la lista)
  beq exit                      @ Si es asi, salir
  ldr %r3, [%r1, #4]!           @ Cargamos el sigiente dato en r3
  cmp %r3, %0                   @ Comparamos r0 y r3
  ble loop                      @ Vamos al inicio del bucle si r3 <= r0
  mov %r0, %r3                  @ De lo contrario poner r3 en r0
  bal loop                      @ Vamos al inicio del bucle (Siempre la rama)
  
exit:                           @ El valor mas grande esta ahora en r0
mov %r7, $1                     @ Preparado para salir
svc $0                          @ Despertamos el Kernel
.end                            @ Marcamos el final del codigo
